Skip to content

Аналитика: backend детализации кейсов и XLSX - #760

Merged
TThanos3000 merged 2 commits into
devfrom
feature/dev-analytics-case-drilldown-backend
Sep 28, 2026
Merged

TThanos3000 merged 2 commits into
devfrom
feature/dev-analytics-case-drilldown-backend

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

Что изменено

В существующих endpoints проектов программы добавлен opt-in режим аналитики кейсов: scoped list и полный XLSX для selected / without_case / all.

Зачем

Менеджеру нужен список проектов из блока «Кейсы» и выгрузки без потери проектов за пределами страницы/поиска.
Утверждённая specification и AC01–AC19: Angular source.

Реализация

Общий classifier работает по Project × Program и точным текущим options. Missing/blank/obsolete/nonexact — without_case.
Текущий dev не получает историю master: feature сохранена в 608bf09 и отдельно перенесена от dev 29be99d с адаптацией существующих имён модулей.
Контракт, повторный review dev.

API

GET /programs/{id}/projects/ и /export-projects/ используют view=case_analytics и обязательный case_scope.
Selected требует exact case_name. List поддерживает search/limit/offset; export их отвергает и выгружает весь bucket.
Legacy без нового режима сохраняется. Новых endpoints/моделей/migrations нет. Project.presentation_address — источник ссылки.

UI

Backend PR не меняет UI. Связанный Angular PR #387 использует утверждённый AnalyticsDrilldown и проверяет новый DTO перед export.

Permissions

Прежние server-side проверки программы сохранены, включая staff/superuser API-доступ и порядок 401/403/404.
Staff UI gate не расширяется.

Проверки

  • PostgreSQL 18 ICU und: 187 feature/regression tests PASS.
  • После усиления literal XLSX header assertion: 13 targeted tests PASS.
  • Case semantics, multi-program isolation, permissions, legacy compatibility, XLSX literal values/имена/пустой файл.
  • Query count на 1/100 строках, нулевые SQL сериализатора, отсутствие writes.
  • flake8 изменённых Python-файлов; Django check; makemigrations --check --dry-run.
  • Source/diff review и git diff --check.
  • Backend PostgreSQL 15 CI: полный suite 933 tests PASS, config/model/migration checks, миграции на пустую БД.
  • Legacy CI: Tests PASS (933 tests, 5 skipped), Lint PASS. Все jobs зелёные.

Acceptance criteria

  • Backend полностью подтверждён: AC02, AC05, AC11, AC12, AC18, AC19.
  • Backend-части AC03, AC04, AC06–10, AC13, AC14, AC17; UI-приёмка в Angular PR.
  • AC01, AC15, AC16 вне backend scope; подтверждены в связанном Angular PR, полный AC audit.

Не проверено

Локально полный suite не запускался; полный PostgreSQL 15 suite выполнен в GitHub CI и прошёл. Image build не выполнялся.
Live deployed SHA/data и production-scale export time/memory не проверены.
Первый локальный прогон на collation C выявил несовместимость кириллического поиска со средой; на отдельной ICU БД все 187 tests прошли.

Риски / migration

Migration не нужна. Сначала этот backend PR в dev и проверка нового contract, затем Angular #387.
List и export выпускаются одной backend-версией: старый сервер может игнорировать query params.
Merge и production deploy выполняет пользователь.

@TThanos3000
TThanos3000 merged commit 0976fdf into dev Sep 28, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants